עם Memcache נוכל לעשות מערכת יעילה ומהירה יותר, וכאן תלמדו מה זה ואיך לעבוד עם הסרביס.
Memcache
הקדמה
Memcached היא מערכת שנועדה לאופטימיזציה של המערכת אשר שומרת מידע בזיכרון ועובדת איתו לפי הצורך. מערכת זו היא Cross-platform (נתמכת ע"י כל מערכות ההפעלה) והיא מופצת חופשית. במדריך זה אנחנו נלמד איך לעבוד עם הAPI של המערכת בPHP.
בין האתרים שעובדים עם המערכת נמצאים יוטיוב, פייסבוק, טוויטר ועוד.
כנ"ל מערכות כגון דרופל, וורדפרס, וג'ומלה עובדים איתה.
להבהרה:
קיימת ספרייה Memcached שמפותחת ע"י יוצר אחר, ואינה קשורה למה שהמדריך מלמד.
הבלבול נובע מכך שלסבריס עצמו של Memcache קוראים Memcached ואותו צריך להתקין על מנת לעבוד עם המערכת. אין שום קשר בין הדברים, ומי שמעוניין לקרוא על ההבדלים מוזמן לעשות חיפוש קצר בגוגל.
התקנה
על מנת שנוכל לעבוד עם המערכת קודם נצטרך להתקין אותה.
מדריך לוינדוס: http://pureform.wordpress.com/2008/01/10/installing-memcache-on-windows-for-php/
מדריך ללינוקס:
- סנטוס/רד-האט/פדורה: http://www.sohailriaz.com/how-to-install-memcached-with-memcache-php-extension-on-centos-5x/
- דביאן (ומבוססיו):
apt-get install memcached php5-memcache
לעבודה
קישור לסיפרייה: Memcache
התחברות:
כדי שנוכל לעבוד עם הספרייה, קודם נצטרך להתחבר לסרביס עצמו.
הפורט בחירת מחדל הוא 11211.
נבצע את ההתחברות כך:
$memcache = new Memcache;
$memcache->connect('localhost','11211'); // localhost == your server
$memcache->connect('localhost','11211'); // localhost == your server
בדוגמא כאן הדגמנו את הפונקציה connect, אשר מחילה 3 פרמטרים. 2 מהם חובה:
הראשון השרת - אליו אנחנו נתחבר. בד"כ זה יהיה localhost אלא אם כן אתם יודעים את השרת שאיתו אתם צריכים לעבוד. הפרמטר השני הוא הפורט - הבחירת מחדל הוא 11211, תוכלו בכל עת לשנות אותו בסרביס עצמו. הפרמטר השלישי (שמוגדר כ0 בבחירת מחדל) הוא timeout, כמה זמן לחכות עד שהשרת יגיב. אם מוגדר 0, כנראה שזה ימשיך לנסות להתחבר עד שיצליח או יקבל timeout.
כמו כן, ניתן להתחבר לכמה שרתים לעבודה איתם.
דוגמא:
$memcache = new Memcache;
$memcache->addServer('localhost','11211');
$memcache->addServer('other_server','9090');
$memcache->addServer('localhost','11211');
$memcache->addServer('other_server','9090');
* אם זה אתר קטן, או פרויקט בהתחלה, יספיק שרת אחת. אם תראו שיש כבר עומס באתר אז כמובן לא יזיק להוסיף עוד שרת :)
add / get / set / replace / get / delete
זה הפונקציות המרכזיות שישמשו אותנו בעבודה.
add - bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )
הפונקציה מוסיפה ערך חדש לקאשינג, עם מפתח שאנחנו בוחרים.
הפונקציה מכילה 4 פרמטרים: מפתח - איתו נוכל לקבל את הערך, ערך - הערך שאותו אנחנו שומרים (אם זה סטרינג או אינטיגר, הוא נשמר כמו שהוא, אחרת הוא Serialized), ושתי הפרמטרים האחרונים: פלאג - על זה נסביר בהמשך, פג - מתי הקאש יפוג.
דוגמא:
$memcache = new Memcache; // creating object
$memcache->connect('localhost','11211'); // connnecting to deamon on the server
$memcache->add('Hello','World',false,60); // setting new value (World), with the key "Hello", with 60 sec untill expire
$memcache->connect('localhost','11211'); // connnecting to deamon on the server
$memcache->add('Hello','World',false,60); // setting new value (World), with the key "Hello", with 60 sec untill expire
* אם הוא מצליח לשמור, הוא יחזיר true. אם קיים מפתח כזה, יחזיר false או אם לא יצליח לשמור גם כן יחזיר false.
set
בדיוק כמו add, אך ההבדל היחיד בינהם שadd מחזיר שלישי במידה ומפתח כזה כבר קיים. הפונקציה הזו תדרוס במידה וקיים מפתח כזה, ותיצור מחדש עם הערך החדש.
get - get ( string $key [, int &$flags ] )
פונקציה פשוטה, שולפת ערך לפי המפתח שנתון. אם לא קיים מפתח כזה, יחזיר שלישי.
replace
מקבלת אותם פרמטרים כמו add וset. מעדכנת מפתח קיים עם הערך החדש שניתן והזמן עד לפג החדש.
במידה ואין מפתח כזה, יחזיר שלישי.
delete
מקבל פרמטר אחד (השני לפי מה שכתוב במניואל לא בשימוש) והוא מפתח.
מוחקת את הערך של אותו מפתח כולל אותו מפתח.
אם לא קיים כזה מפתח, מחזירה שלילי.
עד כאן לפונקציות המרכזיות.
אז מה זה הflag הזה? MEMCACHE_COMPRESSED. במידה והוא בשימוש אז הוא עושה קומפרס לכל הערכים ששמורים עם הספירייה zlib. יכול להיות שקיימים עוד פלאגים, חיפוש קצר בגוגל יניב תשובות :)
בנוסף, יש 2 פונקציות חשובות ליעילות: flush וclose.
flush מוחק את כל הערכים הקיימים, וclose סוגר את העבודה עם השרת.
חשוב להשתמש בפונקציות האלה בעת הצורך, לפחות בclose, זה יעזור למהר את המערכת.
עד כאן למדריך.
בקצרה, למדנו מה זאת הסיפרייה הזו, איך מתקינים ופונקציות ראשיות.
את מה שלא הסברתי נתן להיכנס למיונאל בקישור שנתתי למעלה ושאר הפונקציות מוסברות וקלות להבנה.
נתן לקרוא עוד על קאשינג ותוצריו במאמר הנ"ל: http://arenzon.me/2012/03/18/%D7%A7%D7%90%D7%A9%D7%99%D7%A0%D7%92-%D7%91%D7%A6%D7%93-%D7%A9%D7%A8%D7%AA/
תגובות לכתבה:
תודה רבה:) מדריך מעולה ומועיל.
לא הבנתי מה המטרה של הדבר הזה?!!?
מה זה cache?
תודה רבה! חיפשתי את זה.
אגב, רשום לך מתחת לשם "מתכנת, וסיס אדמין לינוקס" מה הכוונה לסיס?
Aviway
מטרה, לחסוך משאבים ובכךלעשות מערכת יותר מהירה.
יש לך פה במדריך phpguide.co.il/buffered+file+cache.htm הסבר מצוין למה לעשות קאשינג, וכאן פשוט הסברתי איך לעבוד עם כלי שנועד לקאשינג.
כנ"ל משתמש_20541
משתמש_35396, קיצור של סיסטם